/*************************************************
 *	文件名称：mydataexample.c
 *	文件说明：本代码为mydataexample.h的函数实现，需要
			  和mydataexample.h一起编译
 *	程序平台：for linux
 *	文件作者：Jason <jasonsunsoft@163.com>
 *	文件时间：
*************************************************/
#include "mydata.h"

//构造三元元素组
Status InitTriplet(Triplet *T, ElemType v1, ElemType v2, ElemType v3 )
{
	*T = (ElemType *) malloc(3 * sizeof(ElemType));
	if(!T)
		exit (OVERFLOW);
	(*T)[0] = v1;
	(*T)[1] = v2;
	(*T)[2] = v3;
	return OK;
}//InitTriplet

//销毁三元元素组
Status DestroyTriplet(Triplet T)
{
	free(T);
	T = NULL;
	return OK;
}

//元素提取的函数
Status Get(Triplet T, int i, ElemType *e)
{
	if (i < 1 || i > 3)
		return ERROR;
	*e = T[i - 1];
	return OK;
}

//元素修改的函数
Status Put(Triplet T, int i, ElemType e)
{
	if (i < 1 || i > 3)
		return ERROR;
	T[i - 1] = e;
	return OK;
}

//元素组测试升序排列的函数
Status IsAscending(Triplet T)
{
	return (T[0] <= T[1] && T[1] <= T[2]);
}

//元素组测试降序排列的函数
Status IsDescending(Triplet T)
{
	return (T[0] >= T[1] && T[1] >= T[2]);
}

//元素组获取最大值的函数
Status Max(Triplet T, ElemType *e)
{
    *e = (T[0] >= T[1])?((T[0] >= T[2])?T[0]:T[2]):((T[1] >= T[2])?T[1]:T[2]);
    return OK;
}

//元素组获取最小值的函数
Status Min(Triplet T, ElemType *e)
{
    *e = (T[0] <= T[1])?((T[0] <= T[2])?T[0]:T[2]):((T[1] <= T[2])?T[1]:T[2]);
    return OK;
}
